home *** CD-ROM | disk | FTP | other *** search
- Weller-TOOLS für GFA-BASIC: Fragen und Antworten
- ------------------------------------------------
-
-
- Thema: Lokale Variablen, globale Variablen
-
-
- Frage:
- ------
-
- Die Weller-TOOLS für GFA-BASIC finden nicht alle Variablen. Es
- wird dann eine Meldung wie '... kommt nur einmal vor' aus-
- gegeben. Was ist nun richtig?
-
-
- Antwort:
- --------
-
- Die Weller-TOOLS für GFA-BASIC unterscheiden bei der Cross-
- Referenz sinnvollerweise zwischen lokalen und globalen Variab-
- len. Wenn ein und derselbe Variablenname als lokale Variable und
- als globale Variable verwendet wird, hat man es mit zwei
- verschiedenen Variablen zu tun, die sich nicht 'kennen'. Im
- Beispiel wird richtigerweise der Fehler erkannt:
-
- text$............... meldung 13
- *** Kommt in nur einer Procedure vor! Evt. lokal definieren.
- *** Fehler: text$ kommt nur einmal vor! Tippfehler?
-
-
- 1 ' Programm, das denselben Namem für eine globale Variable
- 2 ' und eine lokale Variable verwendet.
- 3 '
- 4 init ! Ausgegeben wird "Hallo".
- 5 meldung ! Ausgegeben wird eine Leerzeile.
- 6 '
- 7 PROCEDURE init
- 8 LOCAL text$
- 9 text$="Hallo"
- 10 PRINT text$
- 11 RETURN
- 12 PROCEDURE meldung
- 13 PRINT text$ ! text$ ist global und kennt die lokale
- 14 RETURN ! Variable text$ aus hallo nicht.
-
-
- Sinngemäß gilt dies auch für Übergabeparameter.
-
- Siehe: GFA-BASIC 3.0 Handbuch Seite 7-26
-
-
-
- Frage:
- ------
-
- Die Weller-TOOLS für GFA-BASIC sehen auch solche Variablen als
- global an, die von einer übergeordneten Procedure als lokal
- definiert wurden. Die Cross-Reference ist dann fehlerhaft. Stimmt
- das?
-
- Antwort:
- --------
-
- Siehe Handbuch Kap. 3.4.5 Unzulänglichkeiten:
-
- In GFA-BASIC gelten lokale Variablen nicht nur in derjenigen
- Procedure als lokal, in der sie definiert werden, sondern auch
- in allen von dieser Procedure aufgerufenen Proceduren. Es mag
- zwar kein guter Programmierstil sein, solche Variablen nicht als
- Übergabe-Variablen weiterzugeben, es ist aber in GFA-BASIC
- erlaubt. Bei den Weller-TOOLS für GFA-BASIC wird aber eine
- lokale Variable nur innerhalb derjenigen Procedure als lokal an-
- gesehen, in der sie definiert wird.
-
- VAR-Variablen werden wie lokale Variablen gehandhabt, sie
- verändern aber den Wert globaler Variablen. Die X-REF-Funktion
- ist nicht so intelligent, Pointer-Operationen (Call by
- Reference, was die VAR-Funktion darstellt) zu verfolgen. Das
- gleiche gilt für den *-Pointer-Operator.
-
- 1 ' Programm, das eine lokale Variable auch in aufgerufenen
- Proceduren verwendet.
- 2 '
- 3 init ! Ausgegeben wird "Hallo".
- 4 meldung ! Ausgegeben wird eine Leerzeile.
- 5 '
- 6 PROCEDURE init
- 7 LOCAL text$
- 8 text$="Hallo"
- 9 PRINT text$
- 10 meldung ! Ausgegeben wird "Hallo".
- 11 RETURN
- 12 PROCEDURE meldung
- 13 PRINT text$ ! text$ ist beim ersten mal die
- lokale Variable von init,
- 14 RETURN ! beim zweiten Mal eine (leere)
- globale Variable.
-
-